package ma.moliere.persistance;

import javax.persistence.EntityManager;
import javax.persistence.Persistence;

public abstract class HelpManager {

	public abstract EntityManager getEntityManager();
	
//	public  EntityManager getEntityManager(){
//		if(em==null){
//			em =Persistence.createEntityManagerFactory("moliere").createEntityManager(); 
//		}
//		return em;
//	}
	public Object creer(final Object entite) {
		System.out.println("Creation de l'instance "+entite.getClass().getSimpleName());

		getEntityManager().persist(entite);
		
		System.out.println("Creation de l'instance "+entite.getClass().getSimpleName()+" avec succ�s ");
		getEntityManager().flush();
		return entite;
	}
	public Object modifier(final Object entite) {
		System.out.println("Modification de l'instance "+entite.getClass().getSimpleName());
		Object result = null;
		result = getEntityManager().merge(entite);
		System.out.println("Modification de l'instance "+entite.getClass().getSimpleName()+" avec succ�s");
		return result;
	}
	public void supprimer(final Object entite) {
		System.out.println("Suppression de l'instance "+entite.getClass().getSimpleName());
		getEntityManager().remove(entite);
		System.out.println("Supprerssion de l'instance "+entite.getClass().getSimpleName()+" avec succ�s");
		
	}
	public Object rechercherParId(final Object id, final Class < ? > clazz) {
		
		Object instance = null;

		System.out.println(" Recherche de l'instance ");

		instance = getEntityManager().find(clazz, id);
		if(instance==null){
			System.out.println(" Instance n'est pas trouv�e  ");
		}else{
		System.out.println(" Instance trouv�e  ");
		}
		return instance;
	}
}
